import sys
from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import QApplication,QMainWindow,QWidget,QPushButton

'''
功能：通过连接内置信号clicked到自定义槽函数onClose，在自定义槽函数onClose内发送自定义信号closeSignal，并将自定义信号closeSignal与内置槽函数close连接。

注意点：自定义信号需要在类的构造函数__init__之前
       如下closeSignal = pyqtSignal()
'''

class MainWindow(QWidget):
    closeSignal = pyqtSignal()

    def __init__(self):
        super().__init__()
        self.setWindowTitle("MainWindow Demo")
        self.resize(800, 600)


        button = QPushButton("close", self)
        #链接内置信号与自定义槽函数
        button.clicked.connect(self.onClose)

        #连接自定义信号closeSignal与内置槽函数close
        self.closeSignal.connect(self.close)

        #以上两部也完成了信号的传递

    # 自定义槽函数
    def onClose(self):
        # 发送自定义信号
        print("按钮被clicked事件")
        self.closeSignal.emit()


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()

    sys.exit(app.exec_())